/*
 * Copyright (c) 1997, 2002, Oracle and/or its affiliates. All rights reserved.
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

package javax.swing;

import javax.swing.event.*;

/**
 * A model that supports at most one indexed selection.
 *
 * @author Dave Moore
 */
public interface SingleSelectionModel {

  /**
   * Returns the model's selection.
   *
   * @return the model's selection, or -1 if there is no selection
   * @see #setSelectedIndex
   */
  public int getSelectedIndex();

  /**
   * Sets the model's selected index to <I>index</I>.
   *
   * Notifies any listeners if the model changes
   *
   * @param index an int specifying the model selection
   * @see #getSelectedIndex
   * @see #addChangeListener
   */
  public void setSelectedIndex(int index);

  /**
   * Clears the selection (to -1).
   */
  public void clearSelection();

  /**
   * Returns true if the selection model currently has a selected value.
   *
   * @return true if a value is currently selected
   */
  public boolean isSelected();

  /**
   * Adds <I>listener</I> as a listener to changes in the model.
   *
   * @param listener the ChangeListener to add
   */
  void addChangeListener(ChangeListener listener);

  /**
   * Removes <I>listener</I> as a listener to changes in the model.
   *
   * @param listener the ChangeListener to remove
   */
  void removeChangeListener(ChangeListener listener);
}
